package com.tul.exercise.base.string.regex;


import org.junit.jupiter.api.Test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Description 《java编程思想》第13章 示例10：
 * <p>
 * 字符类
 **/
public class Rudolph {

    @Test
    public void test(){
        // * {0,}
        // ? {0,1}
        // + {1,}
        // . 任意字符(除了\r\n之外)
        // [abc]包含a、b、c的任意字符
        // [^abc]处了a、b、c之外的任意字符
        // [a-zA-Z]
        //[abc[hij]] 任意a、b、c、h、i、j字符，与a|b|c|h|i|j
        // \s 空白符(空格、tab、换行、换页、回车)
        // \S 非空白字符
        // \d 数字
        // \D 非数字
        // \w 词字符[a-zA-Z0-9]
        // \D 非词字符[^\w]
        // XY Y跟在X后面
        // X|Y X或者Y
        // (X) 捕获组
        // ^ 一行的开始
        // $ 一行的结束
        // \b 词的边界
    }

    @Test
    public void test1() {
        // 按指定模式在字符串查找
        String line = "This order was placed for QT3000! OK?";
        String pattern = "(\\D*)(\\d+)(.*)";

        // 创建 Pattern 对象
        Pattern r = Pattern.compile(pattern);

        // 现在创建 matcher 对象
        Matcher m = r.matcher(line);
        if (m.find( )) {
            System.out.println("Found value: " + m.group(0) );
            System.out.println("Found value: " + m.group(1) );
            System.out.println("Found value: " + m.group(2) );
            System.out.println("Found value: " + m.group(3) );
        } else {
            System.out.println("NO MATCH");
        }

    }
}
